﻿//#define _CRT_SECURE_NO_WARNINGS 1
//#include"Slist.h"
//void QueueInit(Queue* q)
//{
//	assert(q);
//	q->_front = q->_rear = 0;
//}
//void QueuePop(Queue* q)
//{
//	assert(q && q->_front);
//	QNode* p = (QNode*)malloc(sizeof(QNode));
//	p = q->_front;
//	q->_front = p->_next;
//	free(p);
//}
//void QueuePush(Queue* q, QDataType data)
//{
//	assert(q);
//	QNode* p = (QNode*)malloc(sizeof(QNode));
//	p->_data = data;
//	p->_next = 0;
//	if (!q->_front)
//		q->_front = q->_rear = p;
//	else
//	{
//		q->_rear->_next = p;
//		q->_rear = p;
//	}
//}
//QDataType QueueFront(Queue* q)
//{
//	assert(q && q->_front);
//	return q->_front->_data;
//}
//QDataType QueueBack(Queue* q)
//{
//	assert(q && q->_rear);
//	return q->_rear->_data;
//}
//int QueueSize(Queue* q)
//{
//	int count = 0;
//	QNode* node = q->_front;
//	while (node)
//	{
//		count++;
//		node = node->_next;
//	}
//	return count;
//}
//int QueueEmpty(Queue* q)
//{
//	return q->_front ? 0 : 1;
//}
//void QueueDestroy(Queue* q)
//{
//	while (q->_front)
//	{
//		QNode* p = q->_front->_next;
//		free(q->_front);
//		q->_front = p;
//	}
//}
//int main()
//{
//	Queue* q = (Queue*)malloc(sizeof(Queue));
//	QueueInit(q);// 初始化队列 
//
//	QueuePush(q, 1);// 队尾入队列 
//	QueuePush(q, 2);
//	QueuePush(q, 3);
//	QueuePush(q, 4);
//	QueuePush(q, 5);
//
//	QueuePop(q);// 队头出队列 
//
//	QDataType n = QueueFront(q);// 获取队列头部元素
//	fprintf(stdout, "队列的头部元素: %d\n", n);
//
//	n = QueueBack(q);// 获取队列队尾元素
//	fprintf(stdout, "队列的尾部元素: %d\n", n);
//
//	int count = QueueSize(q);// 获取队列中有效元素个数
//	fprintf(stdout, "队列的元素个数: %d\n", count);
//
//	// 检测队列是否为空，如果为空返回非零结果，如果非空返回0 
//	n = QueueEmpty(q);
//	if (n)
//		fprintf(stdout, "此队列为空\n");
//	else
//		fprintf(stdout, "此队列不为空\n");
//
//	QueueDestroy(q);// 销毁队列 
//	return 0;
//}